import threading
from time import sleep, ctime

# 不再把4秒和2秒硬性的编码到不同的函数中，而是使用唯一的loop()函数，并把这些常量放进列表loops中
loops = [4,1]

class XianCheng():
    # def loop(self,nloop):
    #     print('开始循环', nloop, 'at:', ctime())
    #     # print("睡眠时间{}".format(nsec) )
    #     sleep(0.001)
    #     print('循环', nloop, '结束于：', ctime())


    def main(self,target,nloops):
        print('程序开始于：', ctime())
        threads = []
        nloops= range(len(loops))
        # nloops= range(nloops)

        for i in nloops:
            # t = threading.Thread(target=loop, args=(i, loops[i]))  # 循环 实例化2个Thread类，传递函数及其参数，并将线程对象放入一个列表中
            t = threading.Thread(target=target ,args=(i,))
            print("i{}".format(i) )
            threads.append(t)
            # print(t)

        for i in nloops:
            threads[i].start()  # 循环 开始线程
            print("线程{}".format(i) )

        for i in nloops:
            threads[i].join()  # 循环 join()方法可以让主线程等待所有的线程都执行完毕。

        print('任务完成于：', ctime())


if __name__ == '__main__':
    X=XianCheng()
    nloops=[4,1]
    XianCheng().main(target=X.loop,nloops= nloops )